<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Usuario extends CI_Controller {

	public $layout = 'default';
	public $area = 'usuario';
	
	public function __construct (){
		
		parent::__construct();
		$this->load->library(array('form_validation','session'));
		$this->load->helper('url');
		$this->load->model('Usuario_model','',TRUE);
		$this->load->model('Grid_model','',TRUE);
		$this->load->model('Campo_model','',TRUE);

	}
	
	public function index(){
		$this->load->library('restrict_page');
		
		$data['titulo'] ='Usuários';
		
		$data['link_add']  = $this->Campo_model->make_link($this->area.'/add', 'adicionar');
		
		$objetos = $this->Usuario_model->list_all()->result();

		$this->load->library('table');
		$this->table->set_empty("&nbsp;");
		$this->table->set_heading('Nome', 'Ações');
		
		foreach ($objetos as $objeto){
			
			$link_alterar  = $this->Campo_model->make_link($this->area.'/update/'.$objeto->id, 'alterar');
			
			$link_excluir  = $this->Campo_model->make_link($this->area.'/delete/'.$objeto->id, 'deletar');
				
			$this->table->add_row(
						$objeto->nome,	
						$link_alterar . "&nbsp;".
						$link_excluir
			);
		}

		$tmpl = $this->Grid_model->monta_tabela_list();
		$this->table->set_template($tmpl);
		
		$data['table'] = $this->table->generate();

		$this->load->view($this->area.'/'.$this->area.'_list', $data);
		
	}
	
	
	public function add() {
	
		$this->load->model('Usuario_model','',TRUE);
		$qtd_usuarios = $this->Usuario_model->count_all();
			
		if($qtd_usuarios > 0){
			$this->load->library('restrict_page');
		}
		
		$this->load->library(array('form_validation'));
		$this->form_validation->set_error_delimiters('<div class="error_field">', '</div>');
	
		$data['titulo'] = 'Usuário';
		$data['subtitulo'] = 'Novo registro';
	
		$data['link_back']  = $this->Campo_model->make_link('', 'voltar');
		$data['link_salvar'] = $this->Campo_model->make_link($this->area.'/add', 'salvar');
		$data['link_cancelar']  = $this->Campo_model->make_link('', 'cancelar');
	
		$data['form_action'] = site_url($this->area.'/add/');
		$data['mensagem'] = '';
	
		//constroe os campos que serao mostrados no formulario
		$this->load->model('Campo_model','',TRUE);
		$data['campoNome'] = $this->Campo_model->usuario('campoNome');
		$data['campoEmail'] = $this->Campo_model->usuario('campoEmail');
		$data['campoSenha'] = $this->Campo_model->usuario('campoSenha');
		$data['campoConfSenha'] = $this->Campo_model->usuario('campoConfSenha');
		$data['niveisDisponiveis'] = $this->Campo_model->usuario('arrayNiveis');
		$data['nivelSelecionado']  = '2';
	
			
		if ($this->form_validation->run($this->area."/add") == FALSE) {
			$this->load->view($this->area . "/" . $this->area.'_edit', $data);
		} else {
	
			$objeto_do_form = array(
					'nome' => mb_convert_case($this->input->post('campoNome'), MB_CASE_UPPER, "UTF-8"),
					'email' => mb_convert_case($this->input->post('campoEmail'), MB_CASE_LOWER, "UTF-8"),
					'senha' => $this->input->post('campoSenha'),
					'nivel' => $this->input->post('campoNivel'),
						
			);

			$objeto_do_form['senha'] = md5($objeto_do_form['senha']);
	
	
			//checa a existencia de registro com o mesmo nome para evitar duplicatas
			$checa_duplicata = $this->Usuario_model->get_by_email($objeto_do_form['email'])->num_rows();
	
			if ($checa_duplicata > 0){
	
				$data['mensagem'] = 'O registro já existe';
	
				$this->load->view($this->area . "/" . $this->area.'_edit', $data);
	
			}else{
	
				// Salva o registro
				$this->Usuario_model->save($objeto_do_form);
	
				$this->js_custom = 'var sSecs = 4;
                                function getSecs(){
                                    sSecs--;
                                    if(sSecs<0){ sSecs=59; sMins--; }
                                    $("#clock1").html(sSecs);
                                    setTimeout("getSecs()",1000);
                                    var s =  $("#clock1").html();
                                    if (s == "1"){
                                        window.location.href = "' . site_url('/'.$this->area) . '";
                                    }
                                }
                                ';
	
	
				$data['mensagem'] = "<br /> Redirecionando em... ";
				$data['mensagem'] .= '<span id="clock1"> ' . "<script>setTimeout('getSecs()',1000);</script> </span>";
				$data['link1'] = '';
				$data['link2'] = '';
	
				$this->load->view('success', $data);
	
			}
	
		}
	
	}
	
	
	public function update($id, $disabled = null) {
		
		$this->load->library('restrict_page');
	
		$this->load->library(array('form_validation'));
	
		$this->form_validation->set_error_delimiters('<div class="error_field">', '</div>');
	
		$data['titulo'] = 'Usuário';
		$data['subtitulo'] = 'Edição de registro';
	
		$data['disabled'] = ($disabled != null) ? 'disabled' : '';
		$data['link_back'] = $this->Campo_model->make_link($this->area, 'voltar');
		$data['link_cancelar'] = $this->Campo_model->make_link($this->area, 'cancelar');
		$data['link_salvar'] = $this->Campo_model->make_link($this->area, 'salvar');
	
		$data['form_action'] = site_url($this->area.'/update/'.$id);
		$data['mensagem'] = '';
	
		$obj = $this->Usuario_model->get_by_id($id)->row();
	
		//constroe os campos que serao mostrados no formulario
		$this->load->model('Campo_model','',TRUE);


		$data['campoNome'] = $this->Campo_model->usuario('campoNome');
		$data['campoNome']['value'] = $obj->nome;
	
		$data['campoEmail'] = $this->Campo_model->usuario('campoEmail');
		$data['campoEmail']['value'] = $obj->email;

		$data['campoSenha'] = $this->Campo_model->usuario('campoSenha');
		$data['campoSenha']['value'] = $obj->senha;
	
		$data['campoConfSenha'] = $this->Campo_model->usuario('campoConfSenha');
		$data['campoConfSenha']['value'] =  $obj->senha;
	
		$data['niveisDisponiveis'] = $this->Campo_model->usuario('arrayNiveis');
		$data['nivelSelecionado']  = $obj->nivel;
	

		if ($this->form_validation->run($this->area."/add") == FALSE) {
			$this->load->view($this->area . "/" . $this->area.'_edit', $data);
		} else {
			//cria o objeto com os dados passados via post
	
			$objeto_do_form = array(
					'nome' => mb_convert_case($this->input->post('campoNome'), MB_CASE_UPPER, "UTF-8"),
					'email' => mb_convert_case($this->input->post('campoEmail'), MB_CASE_LOWER, "UTF-8"),
					'senha' => $this->input->post('campoSenha'),
					'nivel' => $this->input->post('campoNivel'),
			);
				
			
				
			if($obj->senha != $objeto_do_form['senha']){
				$objeto_do_form['senha'] = md5($objeto_do_form['senha']);
			}
	
			//checa a existencia de registro com o mesmo nome para evitar duplicatas
			$checa_duplicata = $this->Usuario_model->get_by_email($objeto_do_form['email'])->num_rows();
	
			if ($checa_duplicata > 1){
	
				$data['mensagem'] = '<div class="error_field"> O registro já existe </div>';
	
				$this->load->view($this->area . "/" . $this->area.'_edit', $data);
	
			}else{
	
				// Salva o registro
				$this->Usuario_model->update($id,$objeto_do_form);
	
	
				$this->js_custom = 'var sSecs = 4;
                                function getSecs(){
                                    sSecs--;
                                    if(sSecs<0){ sSecs=59; sMins--; }
                                    $("#clock1").html(sSecs);
                                    setTimeout("getSecs()",1000);
                                    var s =  $("#clock1").html();
                                    if (s == "1"){
                                        window.location.href = "' . site_url('/'.$this->area) . '";
                                    }
                                }
                                ';
	
	
				$data['mensagem'] = "<br /> Redirecionando em... ";
				$data['mensagem'] .= '<span id="clock1"> ' . "<script>setTimeout('getSecs()',1000);</script> </span>";
				$data['link1'] = '';
				$data['link2'] = '';
	
				$this->load->view('success', $data);
	
			}
	
		}
	
	}
	
	function delete($id){

		$this->Usuario_model->delete($id);

		redirect($this->area);
	}
	
	
	
		
}
